import os

import requests
import json
from openai import OpenAI


def get_resume_json_from_qianwen(prompt):
    """
    调用千问API，获取模型生成的简历JSON数据
    :param prompt: 设计好的提示词（str）
    :return: 简历字典（成功）/None（失败）
    """
    client = OpenAI(
        # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key="sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    )

    try:
        completion = client.chat.completions.create(
            # 模型列表：https://help.aliyun.com/zh/model-studio/getting-started/models
            model="qwen-plus",
            messages=[
                {"role": "user", "content": prompt},
            ],
            # Qwen3模型通过enable_thinking参数控制思考过程（开源版默认True，商业版默认False）
            # 使用Qwen3开源版模型时，若未启用流式输出，请将下行取消注释，否则会报错
            # extra_body={"enable_thinking": False},
        )
        # print(completion.model_dump_json())
        resume_text = completion.choices[0].message.content
        print(resume_text)

        # 5. 清理文本（去除模型可能添加的代码块标记`json`）
        resume_text = resume_text.strip().strip("```json").strip("```").strip()

        # 6. 转为Python字典（JSON解析）
        resume_json = json.loads(resume_text)
        print("✅ 千问API调用成功，已获取结构化简历数据")
        return resume_json

    except requests.exceptions.RequestException as e:
        print(f"❌ API调用失败（网络/权限问题）：{e}")
        return None
    except json.JSONDecodeError as e:
        print(f"❌ JSON解析失败（提示词格式不严格）：{e}")
        print(f"模型原始输出：{resume_text}")  # 便于调试
        return None
